# Памятка по формату JSON

Ниже приведена некоторая информация про JSON, которая поможет при настройке системы привилегий и не только.

## Типы данных

JSON поддерживает следующие типы данных:

- Числа (целые и дробные) - `123` или `1.23`;
- Строки - `"qwe"`;
- Булевые - `true`/`false`;
- Массивы - `[1, 2]`, могут содержать в себе значения любого типа разделённые запятой;
- Обьекты - `{"k1": "v1", "k2": 2}`, могут содержать в себе пары типа ключ:значение, где ключ - строка, а значение может быть любого типа.

Примеры:

```jsonc
{
  "Строка": "qwe",
  "Целое число": 123,
  "Дробное число": 1.23,
  "Булево значение": false,
  "Массив": [
    "ewq",
    321,
    {
      "Булево значение 2": true
    }
  ],
  "Обьект": {
    "Строка 2": "rty",
    "Целое число 2": 456
  }
}
```

_Примечание: периодически возникают ошибки из-за лишних или недостающих скобок у обьектов и массивов, следите за тем, чтобы все открытые скобки были закрыты._

_Примечание: Значения типа `123` и `"123"` не являются взаимозаменяемыми, то есть, если ожидается числовое значение, то при указании второго варианта может возникнуть непредвиденная ошибка. Подобные ситуации могут обрабатываться на уровне кода, но в любом случае лучше использовать типы правильно._

## Запятые

**Очень важно!**

Формат JSON очень чувствителен к запятым. Их не должно быть там, где они не нужны, и они обязательно должны быть там, где они нужны.

Где запятые **нужны**:

- Между элементами массивов `[1, 2]`
- Между парами ключ:значение в обьектах `{"k1": 1, "k2": "v2"}`

Где запятые **не нужны**:

- После последнего элемента массива `[1, 2,]`
- После последней пары ключ:значение в обьекте `{"k1": 1, "k2": "v2",}`

## Отступы и пробелы

Формат JSON абсолютно не чувствителен к отступам, пробелам и пустым строкам.

```jsonc
// Пример 1:
{
  "key1": "value 1",
  "Key2": true,

  "key3": 321
}

// Пример 2:
{"key1":"value 1","Key2":true,"key3":321}
```

Оба примера спарсятся абсолютно одинаково. Разница лишь в том, что первый пример более удобен для восприятия человеком.

Хоть сам формат JSON не чувствителен к отсупам, но очень желательно соблюдать отступы для вложенных значений, так как это

Единственное место, где JSON учитывает пробелы - внутри строковых значений.

## Инструменты

Ниже приведены некоторые инструменты, которые позволят найти или не допустить ошибок при работе с JSON.

### Visual Studio Code

[Скачать](https://code.visualstudio.com/)

Бесплатный мощный текстовый редактор, предназначенный для редактирования кода. Из коробки имеет поддержку многих языков, в том числе JSON.

В ходе редактирования JSON-файла будет подсвечивать допущенные синтаксические ошибки, а также, при нажатии сочетания Shift+Alt+F может отформатировать файл, исправив в нём отступы.

### JSONLint

[Открыть](https://jsonlint.com/)

Если нет желания скачивать VSCode, можно проверять JSON-файл на наличие синтаксических ошибок при помощи этого сайта. Также, сайт может помочь исправить отступы.
